package ${pkgName};

<#list imports as im>
import ${im};
</#list>
/**
 * ${className}
 * @author generator
 * @date ${.now?date?string('yyyy年MM月dd日')}
 */
public interface ${className} {
	
	/**
	 * 保存
	 * @param entity
	 */
	public void save(${domainEntity.className} entity);

	/**
	 * 修改
	 * @param entity
	 */
	public void update(${domainEntity.className} entity);
	
	/**
	 * 删除
	 * @param id
	 */
	public void deleteById(${domainEntity.pkClassName} pk);
	
	/**
	 * 通过id获取
	 * @param id
	 * @return
	 */
	public ${domainEntity.className} findById(${domainEntity.pkClassName} pk);
	/**
	 * 通过非空属性查询
	 * @param ${domainEntity.className}
	 * @return
	 */
	public List<${domainEntity.className}> findByNotNullProps(${domainEntity.className} entity);
	/**
	 * 通过主键更新非空属性
	 * @param ${domainEntity.className}
	 * @return
	 */
	public void updateNotNullPropsById(${domainEntity.className} entity);
	
	
	/**
	 * 通过实体参数分页查询
	 * @param ${domainEntity.className}.QueryParam
	 * @return
	 */
	public List<${domainEntity.className}> findByQueryParam(${domainEntity.className}.QueryParam queryParam);
	/**
	 * 通过实体参数统计
	 * @param ${domainEntity.className}.QueryParam
	 * @return
	 */
	public long countByQueryParam(${domainEntity.className}.QueryParam queryParam);
	/**
	 * 通过ID集合查询
	 * @param List<${domainEntity.pkClassName}> pks
	 * @return
	 */
	public List<${domainEntity.className}> findByIds(List<${domainEntity.pkClassName}> pks);
	/**
	 * 值填充
	 * @param items
	 * @param field
	 */
	public void fillValues(List<${domainEntity.className}> items,${domainEntity.className}.ValueField ...field);
}
